Криптографічний захист інформації – Міністерство освіти та науки України
Кіровоградський Державний Технічний університет
Кафедра програмного забезпечення
Дипломна робота
БЕЗПЕКА В МЕРЕЖЕВІЙ ОПЕРАЦІЙНІЙ СИСТЕМІ FreeBSD
мережевій операційній системі FreeBSD4.2
Теоретичні положення. Принципи захисту
Оскільки ОС FreeBSD з самого свого зародження задумувалась як багатокористувацька операційна система, у ній завжди була актуальною проблема авторизації доступу різних користувачів до файлів файлової системи. Під авторизацією доступу ми розуміємо дії системи, які дозволяють або не дозволяють доступ певного користувача до певного файлу в залежності від прав доступу користувача і обмежень доступу встановлених для файла. Схема авторизації доступу, яка застосована в ОС FreeBSD, настільки проста і зручна й одночасно настільки потужна, що стала фактично стандартом сучасних операційних систем (які не претендують бути системами з багаторівневим захистом).
Ідентифікатори користувача та групи користувачів
З кожним виконуваним процесом в ОС FreeBSD зв’язується реальний ідентифікатор користувача (real user ID), діючий ідентифікатор користувача (effective user ID) і збережений ідентифікатор користувача (saved user ID). Всі ці ідентифікатори встановлюються за допомогою системного виклику setuid, який можна виконувати тільки в режимі суперкористувача. Аналогічно, з кожним процесом зв’язуються три ідентифікатори групи користувачів - real group ID, effective group ID і saved group ID. Ці ідентифікатори встановлюються привілейованим системним викликом setgid. При вході користувача в систему програма login провіряє, чи користувач зареєстрований в системі і знає правильний пароль (якщо він встановлений), створює новий процес і запускає в ньому потрібний для даного користувача shell. Але перед цим login установлює для знов створеного процесу ідентифікатори користувача і групи, використовуючи для цього інформацію, збережену в файлах /etc/passwd і /etc/group. Після того, як з процесом зв’язані ідентифікатори користувача і групи, для цього процесу починають діяти обмеження для доступу до файлів. Процес може отримати доступ до файлу або виконати його (якщо файл містить виконувану програму) тільки в тому разі, якщо збережені обмеження доступу, які відносяться до файлу, дозволяють це зробити. Зв'язані з процесом ідентифікатори передаються створюваним їм процесам, поширюючи на них ті ж обмеження. Однак у деяких випадках процес може змінити свої права за допомогою системних викликів setuid і setgid, а іноді система може змінити права доступу процесу автоматично.
Розглянемо, наприклад, наступну ситуацію. У файл /etc/passwd заборонений запис усім, крім суперкористувача (суперкористувач може писати в будь-який файл). Цей файл, крім іншого, містить паролі користувачів і кожному користувачу дозволяється змінювати свій пароль. Мається спеціальна програма /bin/passwd, що змінює паролі. Однак користувач не може зробити це навіть за допомогою цієї програми, оскільки запис у файл /etc/passwd заборонений. У системі FreeBSD ця проблема розв’язується в такий спосіб. При виконуваному файлі може бути зазначено, що при його запуску повинні встановлюватися ідентифікатори користувача і/або групи. Якщо користувач запитує виконання такої програми (за допомогою системного виклику exec), то для відповідного процесу встановлюються ідентифікатор користувача, що відповідає ідентифікатору власника виконуваного файлу і/або ідентифікатор групи цього власника. Зокрема, при запуску програми /bin/passwd процес одержить ідентифікатор суперкористувача, і програма зможе зробити запис у файл /etc/passwd. І для ідентифікатора користувача, і для ідентифікатора групи реальний ID є істинним ідентифікатором, а діючий ID - ідентифікатором поточного виконання. Якщо поточний ідентифікатор користувача відповідає суперкористувачу, то цей ідентифікатор і ідентифікатор групи можуть бути перевстановлені в будь-яке значення системними викликами setuid і setgid. Якщо ж поточний ідентифікатор корист...